﻿using System;
using System.Collections.Generic;

namespace Consulta
{
    public interface IConsultas
    {
        int  agregarCategoria(string nombre, string descripcion, char estado);
        int  agregarCliente(string nombre, string apellido, string tel);
        int  agregarComodidad(string nombre, string descripcion, float costoExtra, char estado);
        void AgregarCostoHabitacion(int idcat, string cap, float precio);
        bool AgregarHabCom(int numero, int idcom);
        int  agregarHabitacion(int numero, string capacidad, string cat, List<int> lstcom, char estado);
        void agregarLog(DateTime fecha, int idusuario, string accion, string clasificacion);
        int  altaPermiso(string desc);
        int altaRol(string nombre, char estado);
        int  altaRolPermiso(int rol, int permiso);
        int  altaUsuario(string usuario, string password, string nombre, string apellido, DateTime nacimiento, char estado);
        int  altaUsuarioRol(int usuario, int rol);
        int  altaPais(string nombrepais, char estado);
        int  altaImpuesto(int idPais,string impuesto,float valor,int orden,char estado);
        void bajaPermiso(int id);
        void bajaRol(int id);
        void bajaRolPermiso(int rol, int permiso);
        void bajaUsuarioRol(int usuario, int rol);
        int  calcularCantidadDeNoches(int hab);
        void cambiarPasswordUsuario(int iduser, string pass);
        double costoHabitacion(int hab);
        List<string[]> DarHabitacionesDisponibles(string ini, string fin, List<int> listcomodidades, int idcat, string cap);
        List<string[]> DarLogsFecha(DateTime Fecha);
        void EliminarHabitacionComodidad(int numero, int idcom);
        bool existeReserva(int idReserva);
        void modificarCategoria(int idCategoria, string nombre, string descripcion, char est);
        void modificarCliente(int idCliente, string nombre, string apellido, string tel);
        void modificarComodidad(int idComodidad, string nom, string desc, float costoExtra, char estado);
        void modificarHabitacion(int numero, string capacidad, int idcat, List<int> lstcom, char estado);
        void modificarUsuario(int idUsuario, string usuario, string password, string nombre, string apellido, DateTime nacimiento, char estado);
        void modificarPais(int idPais, string nombrePais, char estado);
        List<string[]> obtenerComodidadesHabitacion(int numero);
        List<string[]> obtenerHabitaciones(bool soloactivos);
        List<string> obtenerHabitacionesOcupadas();
        List<string[]> obtenerUsuarios();
        List<string[]> obtenerPaises(bool soloactivos);
        List<string[]> obtenerImpuestosPais(int idPais, bool soloactivos);
        bool realizarCheckIn(int idReserva);
        void realizarCheckOut(int h);
        bool realizarCheckOut(int idReserva, DateTime fecha);
        int realizarReserva(int idCliente, int numeroHab, DateTime fchin, DateTime fchout);
        List<string[]> traeNoRolesUsuarios(int usuario);
        List<string[]> traerCategorias(bool soloactivos);
        string[] traerCliente(int idCliente);
        string traerClienteHabitacion(int habitacionActual);
        List<string[]> traerClientes();
        List<string[]> traerComodidades(bool soloactivos);
        float traerCostoHabitacion(int idcat, string cap);
        List<string> traerExtras();
        List<string[]> traerNoPermisosRol(int rol);
        List<string[]> traeRolesUsuario(int usuario);
        string traerPermiso(int id);

        List<string[]> traerPermisos();
        List<string[]> traerPermisosRol(int rol);
        List<string[]> traerPermisosUsuario(int usuario);
        List<string[]> traerRoles();
        //int traeUsuario(string usu);
        void updatePermiso(int id, string desc);
        void updateRol(int id, string nombre, char estado);
        void validarUsuario(string usu, string key);
        void setOrdenImpuesto(int idImpuesto, int orden);
        int obtenerIdPaisConfigurado();
        string[] obtenerConfiguracion();
        void guardarConfiguracion(string nombreHotel, int idPais);
        
        //res[0] = idReserva   res[1] = checkIn   res[2] = checkOut
        //res[3] = estado  res[4] = idCliente  res[5] = numeroHab
        List<string[]> obtenerReservas();


        //List<string[]> consultarLog(DateTime fechaDesde, DateTime fechaHasta, int idUsuario, string clasificacion, string accion);
    }
}
